#include<iostream>
class Test
{
    public:
    Test()
    {
        a=new int;
    }
    Test(Test& t)
    {
        a=new int;
        *a=*t.a;

    }

    void operator=(Test &s)
    {   
        delete a;
        a=new int;
        *a=*s.a;

    }

    ~Test()
    {
        delete a;
    }


    private:

    int* a;
};
//RVO优化：返回值优化
//返回局部对象不会发生拷贝，而是直接夺取内存
//左值是不优化的
Test func(Test t)
{

    return t;//将亡值
}

int main()

{
    Test t;//匿名对象:生命周期只有一行 将亡值也是右值
    Test t1=func(t);
    return 0;



}